Telegram Group & Telegram Channel
πŸ‘£ Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° диска: парсим MBR ΠΈ GPT Π½Π° Go

ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ тСхничСский Π³Π°ΠΉΠ΄ β€” ΠΊΠ°ΠΊ Π½Π° языкС Go Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ свой инструмСнт для Π°Π½Π°Π»ΠΈΠ·Π° Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² диска (Π°Π½Π°Π»ΠΎΠ³ `fdisk -l`), работая Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ с «сырыми» Π±Π°ΠΉΡ‚Π°ΠΌΠΈ.

πŸ“Œ Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°:
β€’ Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 512 Π±Π°ΠΉΡ‚ с диска (MBR)
β€’ ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Ρ‚ΠΈΠΏ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ²: MBR ΠΈΠ»ΠΈ GPT
β€’ ΠŸΠ°Ρ€ΡΠΈΡ‚ Π½ΡƒΠΆΠ½Ρ‹Π΅ структуры (MBRPartition, GPTHeader ΠΈ Π΄Ρ€.)
β€’ Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅: смСщСниС, Ρ€Π°Π·ΠΌΠ΅Ρ€, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, Ρ‚ΠΈΠΏ, имя (для GPT)

πŸ”§ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π΄Π²Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°:
1. MBR (Master Boot Record)
β€’ Π”ΠΎ 4 основных Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ²
β€’ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ β€” 2 Π’Π‘
β€’ Π’Π°Π±Π»ΠΈΡ†Π° находится Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ сСкторС (512 Π±Π°ΠΉΡ‚)
β€’ КаТдая запись β€” 16 Π±Π°ΠΉΡ‚, с полями CHS, LBA, Ρ‚ΠΈΠΏΠΎΠΌ ΠΈ Ρ„Π»Π°Π³Π°ΠΌΠΈ
β€’ Π’ ΠΊΠΎΠ½Ρ†Π΅ сигнатура 0x55AA

2. GPT (GUID Partition Table)
β€’ Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ стандарт с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ >2 Π’Π‘
β€’ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ GUID-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹
β€’ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΎ 128 Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ²
β€’ Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ основной ΠΈ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ + Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² Π² UTF‑16

πŸ“– ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° Π² Go:
β€’ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ описаны Ρ‡Π΅Ρ€Π΅Π· struct с Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ полями
β€’ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ binary.Read для чтСния Π±Π»ΠΎΠΊΠΎΠ²
β€’ Π•ΡΡ‚ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²

Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ всСх Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π°Π·ΠΌΠ΅Ρ€, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, смСщСниС ΠΈ, ΠΏΡ€ΠΈ GPT, имя Ρ€Π°Π·Π΄Π΅Π»Π°.

πŸ’‘ ΠŸΠΎΡ‡Π΅ΠΌΡƒ это ΠΏΠΎΠ»Π΅Π·Π½ΠΎ:
β€’ ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ устроСна Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° дисков
β€’ Π£Ρ‡ΠΈΡ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΈ ΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ ΠΈΡ… Π² Go
β€’ ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для систСмного программирования, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, диагностики ΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΆΠ΅Π»Π΅Π·ΠΎΠΌ

πŸ§ͺ Автор Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ:
β€’ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° CRC
β€’ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… ΠΈ логичСских Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ²
β€’ Π§Ρ‚Π΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм
β€’ РСализация Π² WebAssembly для запуска Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

πŸ“Ž Π§ΠΈΡ‚Π°Ρ‚ΡŒ
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/golang_books/996
Create:
Last Update:

πŸ‘£ Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° диска: парсим MBR ΠΈ GPT Π½Π° Go

ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ тСхничСский Π³Π°ΠΉΠ΄ β€” ΠΊΠ°ΠΊ Π½Π° языкС Go Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ свой инструмСнт для Π°Π½Π°Π»ΠΈΠ·Π° Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² диска (Π°Π½Π°Π»ΠΎΠ³ `fdisk -l`), работая Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ с «сырыми» Π±Π°ΠΉΡ‚Π°ΠΌΠΈ.

πŸ“Œ Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°:
β€’ Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 512 Π±Π°ΠΉΡ‚ с диска (MBR)
β€’ ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Ρ‚ΠΈΠΏ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ²: MBR ΠΈΠ»ΠΈ GPT
β€’ ΠŸΠ°Ρ€ΡΠΈΡ‚ Π½ΡƒΠΆΠ½Ρ‹Π΅ структуры (MBRPartition, GPTHeader ΠΈ Π΄Ρ€.)
β€’ Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅: смСщСниС, Ρ€Π°Π·ΠΌΠ΅Ρ€, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, Ρ‚ΠΈΠΏ, имя (для GPT)

πŸ”§ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π΄Π²Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°:
1. MBR (Master Boot Record)
β€’ Π”ΠΎ 4 основных Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ²
β€’ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ β€” 2 Π’Π‘
β€’ Π’Π°Π±Π»ΠΈΡ†Π° находится Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ сСкторС (512 Π±Π°ΠΉΡ‚)
β€’ КаТдая запись β€” 16 Π±Π°ΠΉΡ‚, с полями CHS, LBA, Ρ‚ΠΈΠΏΠΎΠΌ ΠΈ Ρ„Π»Π°Π³Π°ΠΌΠΈ
β€’ Π’ ΠΊΠΎΠ½Ρ†Π΅ сигнатура 0x55AA

2. GPT (GUID Partition Table)
β€’ Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ стандарт с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ >2 Π’Π‘
β€’ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ GUID-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹
β€’ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΎ 128 Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ²
β€’ Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ основной ΠΈ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ + Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² Π² UTF‑16

πŸ“– ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° Π² Go:
β€’ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ описаны Ρ‡Π΅Ρ€Π΅Π· struct с Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ полями
β€’ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ binary.Read для чтСния Π±Π»ΠΎΠΊΠΎΠ²
β€’ Π•ΡΡ‚ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²

Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ всСх Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π°Π·ΠΌΠ΅Ρ€, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, смСщСниС ΠΈ, ΠΏΡ€ΠΈ GPT, имя Ρ€Π°Π·Π΄Π΅Π»Π°.

πŸ’‘ ΠŸΠΎΡ‡Π΅ΠΌΡƒ это ΠΏΠΎΠ»Π΅Π·Π½ΠΎ:
β€’ ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ устроСна Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° дисков
β€’ Π£Ρ‡ΠΈΡ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΈ ΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ ΠΈΡ… Π² Go
β€’ ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для систСмного программирования, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, диагностики ΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΆΠ΅Π»Π΅Π·ΠΎΠΌ

πŸ§ͺ Автор Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ:
β€’ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° CRC
β€’ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… ΠΈ логичСских Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ²
β€’ Π§Ρ‚Π΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм
β€’ РСализация Π² WebAssembly для запуска Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

πŸ“Ž Π§ΠΈΡ‚Π°Ρ‚ΡŒ

BY Golang Books




Share with your friend now:
tg-me.com/golang_books/996

View MORE
Open in Telegram


Golang Books Telegram | DID YOU KNOW?

Date: |

Pinterest (PINS) Stock Sinks As Market Gains

Pinterest (PINS) closed at $71.75 in the latest trading session, marking a -0.18% move from the prior day. This change lagged the S&P 500's daily gain of 0.1%. Meanwhile, the Dow gained 0.9%, and the Nasdaq, a tech-heavy index, lost 0.59%. Heading into today, shares of the digital pinboard and shopping tool company had lost 17.41% over the past month, lagging the Computer and Technology sector's loss of 5.38% and the S&P 500's gain of 0.71% in that time. Investors will be hoping for strength from PINS as it approaches its next earnings release. The company is expected to report EPS of $0.07, up 170% from the prior-year quarter. Our most recent consensus estimate is calling for quarterly revenue of $467.87 million, up 72.05% from the year-ago period.

The lead from Wall Street offers little clarity as the major averages opened lower on Friday and then bounced back and forth across the unchanged line, finally finishing mixed and little changed.The Dow added 33.18 points or 0.10 percent to finish at 34,798.00, while the NASDAQ eased 4.54 points or 0.03 percent to close at 15,047.70 and the S&P 500 rose 6.50 points or 0.15 percent to end at 4,455.48. For the week, the Dow rose 0.6 percent, the NASDAQ added 0.1 percent and the S&P gained 0.5 percent.The lackluster performance on Wall Street came on uncertainty about the outlook for the markets following recent volatility.

Golang Books from in


Telegram Golang Books
FROM USA